package com.power.powercash;

import com.db4o.query.Predicate;

/**
 *
 * @author Juno
 */
public class ConsultaBanco extends Predicate<Banco>
{

  private Banco banco;

  private boolean empty;


  public ConsultaBanco()
  {
    banco = null;
    empty = false;
  }


  public ConsultaBanco(Banco banco)
  {
    this.banco = banco;
    empty = false;
  }


  public Banco getBanco() {
    return banco;
  }


  public void setBanco(Banco banco) {
    this.banco = banco;
  }


  public void setEmptyQuery(boolean emptyQuery)
  {
    empty = emptyQuery;
  }


  public boolean isEmptyQuery()
  {
    return empty;
  }


  @Override
  public boolean match(Banco b) {
    if(b == null) return false;
    if(banco == null) return false;

    if(empty) return true;

    boolean name = false, age = false,
        conta = false, nonull = false;

    if(banco.getName() != null
        && b.getName() != null
        && banco.getName().equals(b.getName())) {
      name = true;
      nonull = true;
    } else if(banco.getName() == null)
      name = true;

    if(banco.getAgencia() > 0
        && b.getAgencia() > 0
        && banco.getAgencia() == b.getAgencia()) {
      age = true;
      nonull = true;
    } else if(banco.getAgencia() <= 0)
      age = true;

    if(banco.getConta() > 0
        && b.getConta() > 0
        && banco.getConta() == b.getConta()) {
      conta = true;
      nonull = true;
    } else if(banco.getConta() <= 0)
      conta = true;

    return name && age && conta && nonull;
  }


  public static void main(String[] args)
  {
    ConsultaBanco cb = new ConsultaBanco();
    Banco b1 = new Banco();
    b1.setName("BB");
    Banco b2 = new Banco("BB", 1, 1);
    System.out.println(b1);
    System.out.println(b2);
    cb.setBanco(b1);
    System.out.println("cb.match(b2): "+ cb.match(b2));
  }

}
